package com.xixi.easy.rpc.serializer;

import java.io.IOException;

/**
 * @author: zxh
 * @date: 2024/8/21 10:49
 * @description: 序列化器接口
 */
public interface CustomSerializer {

	/**
	 * 序列化
	 * @author zxh
	 * @param object 待序列化的对象
	 * @return 返回对象序列化后的字节数组
	 * @param <T> 泛型声明
	 * @throws IOException 遇到IO异常进行抛出
	 * @CreateDate 2024/8/21
	 * @UpdateLog 2024/8/21 - []
	 */
	<T> byte[] serialize(T object) throws IOException;

	/**
	 * 反序列化
	 * @author zxh
	 * @param bytes 待反序列化的字节数组
	 * @param type 反序列化的目标类型
	 * @return 返回反序列化后的对象
	 * @param <T> 泛型声明
	 * @throws IOException 遇到IO异常进行抛出
	 * @CreateDate 2024/8/21
	 * @UpdateLog 2024/8/21 - []
	 */
	<T> T deserialize(byte[] bytes, Class<T> type) throws IOException;
}
